Intenté crear un controlador de copias pero no pude.
<!DOCTYPE html> <html> <head> <meta charset = "utf-8"> <title>test</title> </head> <body> <h1>Test</h1> <span class = "test"></span> <script type = "text/javascript" src = "script.js"></script> </body> </html> function handleCopy() { document.querySelector("span.test").innerText = "Copied"; } window.oncopy = handleCopy;y copio de index.html, pero js no cambia el intervalo. pero cambiando el código js a este, el lapso es el cambio.
function handleCopy() { document.querySelector("span.test").innerText = "Copied"; } window.addEventListener("copy", handleCopy);¿Por qué sucedió eso? Lo siento, mi pésimo inglés :(
Esto sucede porque no hay una propiedad oncopy en el objeto de window . Si abriera la consola y escribiera "window.onco", no hay oncopy en las sugerencias. En la documentación esto no está muy claro, pero al echar un vistazo a los controladores de eventos , el evento oncopy no aparece en la lista, ni se puede encontrar en los siguientes controladores de eventos implementados desde otra lista. En cambio, puede encontrarlo en la lista de eventos , que en el prólogo dice: " Escuche estos eventos usando addEventListener() ". Parece que el artículo necesita una pequeña corrección, ya que el prólogo también dice que estos eventos se pueden adjuntar con la propiedad oneventname , obviamente, eso no es cierto en todos los casos.
El evento de copy no es un GlobalEventHandler y, por lo tanto, no tiene su propio controlador IDL disponible en window .
Este evento está definido para activarse en un HTMLElement y ahí es donde se puede acceder al IDL oncopy :
console.log("oncopy" in HTMLElement.prototype); Y debido a que es un DocumentAndElementEventHandler , también lo encontrará en document .
Entonces, si desea capturar el evento en la window , será mediante burbujeo y gracias al método addEventListener() .
addEventListener("copy", (evt) => { console.log("copied"); }); <input value="copy me"> De lo contrario, puede usar el controlador de eventos del document o cualquier HTMLElement principal (por ejemplo document.body ):
document.oncopy = (evt) => { console.log("copied"); } <input value="copy me">